/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package bs.entidad.dao;

import bs.entidad.modelo.Categoria;
import bs.entidad.modelo.CategoriaPK;
import bs.entidad.modelo.TipoEntidad;
import bs.global.dao.BaseDAO;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 *
 * @author Claudio
 */
@Stateless
public class CategoriaDAO extends BaseDAO{

    public Categoria getCategoria(String codigo, Integer tipo){
        
        CategoriaPK id = new CategoriaPK(codigo, tipo);        
        return getObjeto(Categoria.class, id);        
    }    
    
    public List<Categoria> getCategoriaByTipo(TipoEntidad tipo, boolean mostrarDebaja){
        
        try {
            String sQuery = "SELECT e FROM Categoria e "
                    + "WHERE e.tipo = :tipo "
                    + (mostrarDebaja ? " ": " AND e.auditoria.debaja = 'N' ")
                    + "ORDER BY e.codigo ";

            Query q = em.createQuery(sQuery);
            
            q.setParameter("tipo", tipo);
            return q.getResultList();

        } catch (Exception e) {
            log.log(Level.SEVERE, "getCategoriaByTipo", e.getStackTrace());
            return new ArrayList<Categoria>();
        }        
    }
    
    public List<Categoria> getCategoriaByBusqueda(String txtBusqueda, TipoEntidad tipo, boolean mostrarDebaja){
        
        try {
            String sQuery = "SELECT e FROM Categoria e "
                    + "WHERE e.tipo = :tipo "
                    + " AND ( (e.codigo LIKE :codigo ) "
                    + "  OR ( e.descripcion LIKE :descripcion )) "
                    + (mostrarDebaja ? " ": " AND e.auditoria.debaja = 'N' ")
                    + "ORDER BY e.codigo ";

            Query q = em.createQuery(sQuery);
            
            q.setParameter("tipo", tipo);
            q.setParameter("codigo", "%"+txtBusqueda+"%");
            q.setParameter("descripcion", "%"+txtBusqueda+"%");
            
            return q.getResultList();

        } catch (Exception e) {
            log.log(Level.SEVERE, "getCategoriaByBusqueda", e.getStackTrace());
            return new ArrayList<Categoria>();
        }        
    }
}
